package com.example.lib.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 通过缓冲区复制一个.java文件
 *
 * readLine方法的原理
 * 无论是读一行，或者是读取多个字符，其实最终都是在硬盘上一个一个读取。
 * 所以最终使用的还是read方法一次读取一个字符的方法。
 */
public class k_io_buffer_copy_19_03_04 {

    public static void main(String[] args) {

        BufferedReader bufr = null;
        BufferedWriter bufw = null;

        try {
            bufr = new BufferedReader(new FileReader("lib/src/main/java/com/example/lib/io/f_io_FileReader_18_11.java"));
            bufw = new BufferedWriter(new FileWriter("D://fileReader.java"));

            String buf = null;

            while ((buf = bufr.readLine()) != null) {
                bufw.write(buf);
                bufw.newLine();
                bufw.flush();
            }
        } catch (IOException e) {
            throw new RuntimeException("读写失败");
        } finally {
            try {
                if (bufr != null) {
                    bufr.close();
                }
            } catch (IOException e) {
                throw new RuntimeException("读取关闭失败");
            }
            try {
                if (bufw != null) {
                    bufw.close();
                }
            } catch (IOException e) {
                throw new RuntimeException("写入关闭失败");
            }
        }
    }

}
